Distributed systems, also known as distributed computing, generally include a collection of autonomous computational entities or nodes in a network comprising software to produce an integrated computing facility by communicating and coordinating actions by exchanging messages. Distributed systems allow for more efficient task execution due to their size and power, which is superior to a combination of stand-alone systems. Distributed systems have a variety of application fields such as telecommunication networks, real-time process control and parallel computation, among others. Distributed systems may have different architectures such as client-server, three-tier, n-tier, or peer-to-peer, loose coupling or tight coupling.
Distributed systems are used for processing different kind of computer operations, including a type of information transactions that are divided into individual, indivisible computer sub-operations typically referred to as “operations”. Each such transaction must succeed or fail as a complete unit. In other words, such the computer transaction can not be “partially completed”—in response to at least one of the constituent operations failing, the entire computer transaction must fail.
Since constituent sub-operations (or transactions) can be executed by different nodes of the distributed system, the underlying premise of transaction processing is designed to maintain system's integrity (for example, data consistency in a database) by ensuring that interdependent operations in the distributed system are either all completed successfully or all canceled successfully.
For example, one of the areas for using the distributed systems is to execute transaction processing in an on-line banking system, where remote client computers (such as laptops, desktops, smartphones, and the like) are used to access an on-line banking server to execute remote transaction on the data maintained by the on-line banking server (such as account data and the like). For illustration purposes, let's assume that the remote transaction is moving $500 from a customer's savings account to a customer's checking account. This transaction involves at least two separate operations in computer terms: debiting a record associated with the savings account by $500, and crediting a record associated with the checking account by $500. If one operation succeeds but the other does not, the books of the bank will not balance. The transaction processing, thus, ensures that either both operations succeed or both fail, so that there is no inconsistency in the bank's database as a whole.
Transaction processing links multiple individual operations into a single transaction, and ensures that either all operations in the single transaction are completed without error, or none of them are. If some of the operations are completed but errors occur when the others are attempted, the transaction processing system “rolls back” all of the operations of the transaction (including the successful ones), thereby erasing all traces of the transaction and restoring the system to the consistent, known state that it was in before processing of the transaction began.
If all operations of the transaction are completed successfully, the transaction is “committed” by the system. In other words, all changes made to the database as a result of the execution of the constituent operations are made permanent—thus, the transaction cannot be rolled back once it is committed.
Transaction processing guards against hardware and software errors that might leave a transaction partially completed. If the computer system crashes in the middle of a transaction, the transaction processing system guarantees that all operations in any uncommitted transactions are cancelled. In certain circumstances, several transaction requests can be issued simultaneously (or substantially simultaneously, for the sequential transaction request is issued right before the previous transaction request is fully executed).
If the two sequentially issues transaction requests overlap (i.e. need to process data stored in the same portion of the database), processing of the two overlapping transaction requests has a potential of creating conflicts. For example, if the customer mentioned in the example above has $550 in his savings account and attempts to transfer $100 to a different person while at the same time moving $500 to the checking account, only one of the overlapping transactions can succeed.
Rather than processing transactions sequentially (which is generally inefficient), the transaction processing in the distributed system is built on a premise that concurrent implementations of transaction processing is executed in a way such that to ensure that the end result reflects a conflict-free outcome, the same as would be reached if executing the transactions sequentially in any order. In the present, this means that no matter which transaction request was issued first, either one the transfer to a different person or the move to the checking account succeeds, while the other one fails.
US 2014/0297652 discloses a computer system identifies high-value information in data streams. The computer system receives a plurality of data streams. Each of the data streams includes a plurality of posts. Each of the posts includes a content portion and one or more source characteristics. In real time, for each post in a particular data stream: the system assigns the post a post identifier; generates a content packet and one or more source packets; queries memory to access a source profile using a respective source identifier included in the content packet; correlates the content packet with information from the source profile to produce a correlated content packet; and broadcasts the correlated content packet to a plurality of filter graph definitions.
U.S. Pat. No. 7,813,276 discloses a network cluster having a plurality of cluster members. In order to control the admission of client requests sent to the cluster, one member of the cluster is elected “reservation coordinator.” The reservation coordinator runs a reservation algorithm for controlling the distribution of rate capacity across members of the cluster. For example, each member of the cluster may reserve some amount of rate from the coordinator to allow for passing of client requests. To ensure that each member is provided with the appropriate rate capacity, each member of the cluster runs an estimation algorithm to determine whether or not additional rate capacity should be reserved from the reservation coordinator, or released back into the cluster for redistribution. The estimation algorithm is run in real-time and allows the admission control algorithm to adapt to changes in rate distribution.
U.S. Pat. No. 8,028,152 discloses a hierarchical microprocessor. An embodiment of a hierarchical microprocessor includes a plurality of first-level instruction pipeline elements; a plurality of execution clusters, where each execution cluster is operatively coupled with each of the first-level instruction pipeline elements. Each execution cluster includes a plurality of second-level instruction pipeline elements, where each of the second-level instruction pipeline elements corresponds with a respective first-level instruction pipeline element, and one or more instruction execution units operatively coupled with each of the second-level instruction pipeline elements, where the microprocessor is configured to execute multiple execution threads using the plurality of first-level instruction pipeline elements and the plurality of execution clusters.